<?php
namespace controller;
require_once ('src/Model/NewUserModel.php');
require_once ('src/View/NewUserView.php');

class NewUserController {
    private $loginModel;
    public $newUserModel;
    public $newUserView ;


    /**
    * @param object \controller\LoginController $loginModel
    *
    * vi tar in vårt loginModel-objekt så vi kommer åt det från de andra funktionerna i klassen
    */
    public function __construct(\model\LoginModel $loginModel) {
        $this->loginModel = $loginModel;
        $this->newUserModel = new \model\NewUserModel();
        $this->newUserView = new \view\NewUserView();
    }


    /**
    * körs om användaren vill registera en ny användare
    */
    public function registerNewUserName() {

        //om användaren har klickat på registrera-knappen och formuläret är skickat då körs denna if-sats
        if($this->newUserView->userHasRegisterInput()) {
            $this->newUserModel->resetNewUser();
            $userInput = $this->newUserView->returnNewUserInput();
            $username = $userInput[0];
            $password = $userInput[1];
            $retypedPassword = $userInput[2];

            //Validering görs med hjälp av modellen
            if ($this->newUserModel->isUsernameToShort($username)) {
                $this->newUserView->setRegisteredNewUsernameStatusMessage(1);

                if ($this->newUserModel->isPasswordToShort($password)) {
                    $this->newUserView->setRegisteredNewUsernameStatusMessage(2);
                }

                if ($this->newUserModel->doesPasswordsNotMatch($password, $retypedPassword)) {
                        $this->newUserView->setRegisteredNewUsernameStatusMessage(3);
                }

            } else if ($this->loginModel->userModel->isUserNameTaken($username)) {
                $this->newUserView->setRegisteredNewUsernameStatusMessage(4);

            }  else if ($this->newUserModel->isPasswordToShort($password)) {
                $this->newUserView->setRegisteredNewUsernameStatusMessage(5);

            } else if ($this->newUserModel->doesPasswordsNotMatch($password, $retypedPassword))  {
                $this->newUserView->setRegisteredNewUsernameStatusMessage(6);

            }  else if ($this->newUserModel->hasUsernameInvalidChars($username)) {
               $this->newUserView->setRegisteredNewUsernameStatusMessage(7);
               $username = strip_tags($username);            //<-strip_tags() inbyggd metod som plockar bort ex html tagar i användarnamn fältet i formuläret


            //om valideringen gått igenom körs nedanstående kod och användaren läggs upp i databasen, detta förs i modellen
            } else {
                $this->newUserModel->setNewUser($username);
                $this->loginModel->userModel->addUserToDatabase($username,$password);
            }

            $this->newUserView->setRegisteredNewUserName($username);

        }
	}


}

